package com.ruoyi.system.service.impl;

import java.util.ArrayList;
import java.util.List;

import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.SysLogininfor;
import com.ruoyi.system.mapper.SysUserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.domain.SysOperLog;
import com.ruoyi.system.mapper.SysOperLogMapper;
import com.ruoyi.system.service.ISysOperLogService;

/**
 * 操作日志 服务层处理
 *
 * @author ruoyi
 */
@Service
public class SysOperLogServiceImpl extends BaseController implements ISysOperLogService
{
    @Autowired
    private SysOperLogMapper operLogMapper;
    @Autowired
    private SysUserMapper sysUserMapper;

    /**
     * 新增操作日志
     *
     * @param operLog 操作日志对象
     */
    @Override
    public void insertOperlog(SysOperLog operLog)
    {
        operLogMapper.insertOperlog(operLog);
    }

    /**
     * 查询系统操作日志集合
     *
     * @param operLog 操作日志对象
     * @return 操作日志集合
     */
    @Override
    public List<SysOperLog> selectOperLogList(SysOperLog operLog)
    {
        return operLogMapper.selectOperLogList(operLog);
    }

    /**
     * 查询系统操作日志集合
     *
     * @param operLog 操作日志对象
     * @return 操作日志集合
     */
    @Override
    public List<SysOperLog> selectOperLogList1(SysOperLog operLog)
    {

        SysUser user = new SysUser();
        String username = SecurityUtils.getUsername();
        user.setUserName(username);
        System.out.println(username);
        //获取到登入用户的 省市县code
        SysUser sysUser = sysUserMapper.getUserAddrCode(username);
        List<SysUser> userList = new ArrayList<>();
        //判断账号是哪一个级别
        //省级账号
        if (StringUtils.isNotEmpty(sysUser.getProvinceCode())&&
                StringUtils.isEmpty(sysUser.getCityCode())&&
                StringUtils.isEmpty(sysUser.getAreaCode())) {
            user.setProvinceCode(sysUser.getProvinceCode());
            userList = sysUserMapper.getProvinceUser(user);
            //市级账号
        }else if (StringUtils.isNotEmpty(sysUser.getProvinceCode())&&
                StringUtils.isNotEmpty(sysUser.getCityCode())&&
                StringUtils.isEmpty(sysUser.getAreaCode())){
            user.setProvinceCode(sysUser.getProvinceCode());
            user.setCityCode(sysUser.getCityCode());
            userList = sysUserMapper.getCityUser(user);
            //县级账号
        }else if (StringUtils.isNotEmpty(sysUser.getProvinceCode())&&
                StringUtils.isNotEmpty(sysUser.getCityCode())&&
                StringUtils.isNotEmpty(sysUser.getAreaCode())){
            user.setProvinceCode(sysUser.getProvinceCode());
            user.setCityCode(sysUser.getCityCode());
            user.setAreaCode(sysUser.getAreaCode());
            userList = sysUserMapper.getAreaUser(user);
        }
        //然后更具查询到的username去查询用户下的登入信息
        startPage();
        List<SysOperLog> sysOperLogList = operLogMapper.selectOperLogInfo(userList);
        return sysOperLogList;
//        return operLogMapper.selectOperLogList1(operLog);
    }

    /**
     * 批量删除系统操作日志
     *
     * @param operIds 需要删除的操作日志ID
     * @return 结果
     */
    @Override
    public int deleteOperLogByIds(Long[] operIds)
    {
        return operLogMapper.deleteOperLogByIds(operIds);
    }

    /**
     * 查询操作日志详细
     *
     * @param operId 操作ID
     * @return 操作日志对象
     */
    @Override
    public SysOperLog selectOperLogById(Long operId)
    {
        return operLogMapper.selectOperLogById(operId);
    }

    /**
     * 清空操作日志
     */
    @Override
    public void cleanOperLog()
    {
        operLogMapper.cleanOperLog();
    }
}
